
#include "Angel.h"

struct CameraParameters
{
	vec3 viewDir;
	vec3 rightVector;	
	vec3 upVector;
	vec3 position;
};

class CCamera
{
public:
	CCamera() {}

	void InitCamera();
	void ResetCameraParameters();

	mat4 GetViewMatrix ( void );
	vec3 GetOrigin();

	void Move ( vec3 direction );
	void PitchUp ( GLfloat angle );
	void HeadRight ( GLfloat angle );
	void RollRight ( GLfloat angle );

	void MoveForward ( GLfloat distance );
	void MoveUpward ( GLfloat distance );
	void StrafeRight ( GLfloat distance );

private:
	vec4 createVec4FromVec3(vec3 vec, GLfloat w) { return vec4(vec.x,vec.y,vec.z,w); }

	CameraParameters m_currentParams;
	CameraParameters m_defaultParams;
};


